In computing, an operating system may provide an environment in which the user is able to run application software. The applications that users run rely on services provided by the operating system to perform tasks while they execute, in many cases without the user—or even the programmer—giving much thought to them. For example, for an application to read a file from disk, the programmer may simply call a function that the operating system provides, and the operating system may handle the specific steps required to perform that read accordingly. As such, the application programmer is freed from having to worry about the differences between reading a file that resides on the computer's internal hard disk or a file on an external USB flash drive; the operating system takes care of such matters.
An operating system may include a kernel that serves as a central component for facilitating communication between software applications and hardware devices (e.g., central processing unit (CPU), memory, and input/output (I/O) devices) of a machine. For example, a kernel may be responsible for facilitating operating system functions and various management tasks (e.g., process management, disk management, and memory management).